home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9410
/
FLIGHT.CD
< prev
next >
Wrap
Text File
|
1994-11-23
|
13KB
|
216 lines
@VVirtual Reality -- házilag@N
@VA fantázia szárnyalása...@N
... avagy hogyan írjunk repülésszimulátort. Manapság
Magyarországon elterjedt szokás külföldrôl katalógus
alapján vásárolni számítástechnikai könyveket. Ennek
egyszerû oka, hogy egyetlen forgalmazó sem képes minden
könyvbôl egy-egy példányt tartani, hiszen ez jelentôs
tôkelekötést igényelne.
Jó esetben a vevô, megrendelô legalább egy eredeti
könyvkatalógusból választhat (amelyben rövid ismertetô is
van a könyvekrôl), de a legtöbbször csak egy egyszerû
listája van. A gyanútlan vevô e lista alapján megrendel egy
könyvet, melyrôl a címe alapján azt hiszi, hogy a könyv
éppen neki szól. Pár hetes, esetleg hónapos várakozás után
megjön az értesítés, félhavi fizetésével együtt jelenjen
meg, átveheti a megrendelt könyvet. A buzgó
számítástechnikus kifizeti álmai könyvét (mit is tehetne
mást, hiszen aláírása ott szerepel a megrendelôn), és már a
metrón (buszon, villamoson) elkezdi tanulmányozni az
áhított mûvet. Bár ne tenné. ùgy legalább nem érné
csalódás. Az esetek nagy részében a könyvek nem arról
szólnak, és nem úgy, ahogy azt a megrendelô a cím alapján
gondolta. Az angol nyelvû könyvek zömét ugyanis nem
programozóknak írták, hanem átlag amerikaiaknak, akik a
könyvbôl nem azt akarják megtudni, hogy egy
repülésszimulátor megírásához milyen matematikai
algoritmusok szükségesek, hanem azt, hogy az XYZ
játékprogramban mely gombokkal lehet lôni, bombázni stb.
Ezért ha nem körültekintôen választjuk ki, hogy milyen
jellegû könyvet rendeljünk, könnyen abba a helyzetbe
kerülhetünk, hogy egy program leírását kapjuk meg, amihez a
programot még meg kell vennünk. Mindezt pár tucat
dollárért. A programot persze el is lophatjuk (bár ez
törvénybe ütközô), de sajnos a könyv árát már nem kapjuk
vissza.
@VZavaros algoritmusok@N
Mint a számítógépes grafika rajongója, a fenti módszer
alkalmazásával már jónéhány abszolút használhatatlan
könyvet sikerült beszereznem. E könyvek egy része egy-egy
program leírását tartalmazta, mások azt állították
magukról, hogy bevezetik az olvasót a számítógépes grafika
(2D, 3D stb.) rejtelmeibe. A könyvek ez az utóbbi csoportja
valóban tett valamit a kitûzött cél érdekében, de a
végeredmény sokszor elkeserítô volt. A könyvek ugyanis
magyarázatok helyett programlistákat közöltek. Logikailag
hibás kiindulásból rossz algoritmusokat hoztak létre,
amelyek ugyan a könyvben szereplô példákban helyesen
mûködtek, de minden másra használhatatlanok voltak. Persze
ha semmit sem magyarázunk meg, akkor azt sem kell az
olvasóval közölni, hogy az illetô algoritmus milyen
korlátok között mûködik...
Az elôzô esetbôl tanulva már nem rendelek meg könyvet
anélkül, hogy elôtte meg ne nézném (valahol, valakinél, aki
volt olyan balga, hogy megvette). îgy került kezembe
Christopher Lampton Flights of Fantasy (A fantázia
szárnyalása) címû könyve, mely már elsô átnézésre
meglepetést okozott. A könyv ugyanis valóban arról szól
amit az alcíme ígér: 3-D videojátékok programozása C++-ban.
@VMatematika a gyakorlatban@N
Lampton könyve azoknak szól, akik szeretnék megismerni a
számítógépes grafika alapjait, nemcsak kész programokat és
rutinokat felhasználni, hanem szeretnék megérteni az
algoritmusok mûködési elvét is. A könyv megismertet a
számítógépes grafikában használt matematikai módszerekkel.
Nem riad vissza olyan fogalmak használatától, amelyek
meghaladják a középiskolában tanultakat (mint például a
mátrixok fogalma, mátrix- és vektormûveletek, fraktálok).
Ennek ellenére nem merül el az elméleti kérdések
tárgyalásában, hanem az alapfogalmak tisztázása után
konkrét, mûködôképes programokon mutatja be azok
használatát. Minden matematikai fogalom bevezetése után
egyszerû, különálló kis programok segítik a fogalmak jobb
megértését és azok használatát a programokban. A könyv
megértése nem kíván egyetemi végzettséget, de a
középiskolai matematika anyag ismerete, és némi fogékonyság
a matematika iránt szükséges.
A könyvben ismertetett algoritmusok és a programok egy
része gépfüggetlen. A hardver teljes tudását azonban
általában csak assembly programokból tudjuk kihasználni.
Olyan programoknál -- mint a könyvben ismertetett
szimulátor is -- amelyek a teljesítôképesség határán
használják a hardvert, elengedhetetlen assembly rutinok
használata. Ezek sajnos gépfüggôvé teszik a programot. îgy
szimulátorunk csak IBM PC, vagy azzal kompatibilis gépen
futtatható. A program nagyrésze C nyelven íródott, a szerzô
a fordításhoz Borland C++-t használt. A programban használt
grafikus rutinok assemblyben íródtak. Mivel a grafikus
felbontás nagyban befolyásolja a rajzoláshoz szükséges CPU
idôt, a szimulátor 320x200-as felbontásban dolgozik, 256
színnel. A könyv foglalkozik a VGA kártyák grafikus
üzemmódjainak beállításával és használatával, különösen a
programban használt 320x200-as móddal. Részletesen leírja a
videomemória használatát, az egyes képpontok címzését, a
színpaletta programozását és a képek megjelenítését. Külön
fejezetben foglalkozik 2D alakzatok mozgatásával, a sprite
technikával.
A számítógépes grafikában jelentôs szerepe van az
egyenesek, sokszögek és kitöltött sokszögek rajzolásának.
Az 1960-as évek elejétôl -- amikor az elsô grafikus
programok születtek -- számos megoldás született ezen
alakzatok hatékony, gyors rajzolására. A könyv ezek közül a
legelterjedtebbet, a Bresenham egyenesrajzoló algoritmust
ismerteti. A poligonrajzoló és kitöltô algoritmusokat ebbôl
származtatja.
Åttérve a háromdimenziós alakzatok megjelenítésére, a
szerzô elôször a testek háromdimenziós leírásával és a
koordináták tárolásával foglalkozik. Ezután bemutatja
azokat a matematikai eszközöket, amelyek segítségével
elôállíthatjuk ezen tárgyak kétdimenziós képét.
A következô lépésben megismerkedhetünk egy olyan
algoritmussal, amely lehetôvé teszi a takart felületek
elhagyását. Ha ugyanis a valóságban egy tárgy közelebb van
hozzánk, mint egy másik, akkor elôfordul, hogy a közelebbi
részben, vagy teljes egészében eltakarja a távolabbi
tárgyat. Egy olyan szimulátornak, amely élethû képet akar
elôállítani, figyelembe kell vennie ezeket a takarásokat.
Sajnos a takart felületek felismerése és elhagyása sok
számítással jár. îgy minél jobb algoritmust találunk,
programunk annál lassabb lesz. Ezért, bár a könyv bemutat
egy hibátlan algoritmust -- ez az úgynevezett festô
algoritmus -- a végsô szimulátor programban egy
egyszerûsített változat szerepel, amely nem mindig ismeri
fel helyesen a takart felületeket, de elég gyors ahhoz,
hogy a szimulátor élvezhetô legyen.
@VTeljes vértezetben@N
Bár a látkép generálása a leglátványosabb, mégis csupán
csak egy része a teljes programnak. Mivel a könyv nem
számítógépes grafikát ígér, hanem egy teljes szimulátort, a
szerzô nem feledkezett meg a program többi részérôl sem.
îgy egy-egy fejezetet szentel a programmal történô
párbeszédnek, a billentyûzet és a botkormány kezelésének,
továbbá a hangkártya programozásának.
A repülésszimulátorok talán legtitokzatosabb része a
repülés dinamikai egyenleteinek megoldása. Ennek során
határozzák meg a repülôgép sebességébôl, a vezérsíkok
állásából, külsô hatásokból (például szél) a repülôgép
mozgását. Professzionális szimulátoroknál e feladatra
legalább akkora, ha nem nagyobb gondot fordítanak, mint a
látványgenerálásra. Mivel a mi szimulátorunk csak játék,
nem fogjuk a dinamikai egyenleteket megoldani. (Ez még
szakember számára sem könnyû feladat.) A könyv megelégszik
az alapvetô fogalmak, mint sebesség, bólintás, dôlés
tisztázásával. Ezekbôl a repülô mozgását a legegyszerûbb
módon határozza meg.
Csodákat persze Lampton sem mûvel. A program, amit
közzétesz, vagy amit a könyv alapján írhatunk, nem fogja
áthágni a PC-k korlátait. Ne számítsunk arra, hogy a könyv
elolvasása, megértése után olyan programokat írhatunk, mint
amilyeneket a PC-k nagyteljesítményû testvérein láthatunk.
Ha Borland C helyett 32 bites Watcom C++ fordítót
használunk, mintegy 20-30%-os sebességnövekedést érhetünk
el. A sebességnövelés másik módja speciális videokártyák
használata. E 3D grafikát támogató kártyák általában
tartalmaznak egy processzort (például Intel 860), amely
hardverrel végzi a sokszögrajzolást és valamilyen takart
felület algoritmust. E kártyák ára azonban már
meghaladhatja számítógépünk árát. Ráadásul néha nem elég a
kártyát magát megvenni, hanem ha programozni akarjuk, úgy
fejlesztôrendszert is vennünk kell hozzá.
@VA jövô lehetôségei@N
A háromdimeziós grafika -- bár elméleti alapjai már
ismertek -- napjaink egyik jelentôsen fejlôdô ágazata.
Számos olyan rendszer létezik, amelyek segítségével
háromdimenziós látványgenerátorokat hozhatunk létre.
Ilyenek a RenderMan, a PHIGS és az OpenGL. Várható, hogy a
közeljövôben e rendszerek a PC-ken is megjelennek, és
hardver támogatást fognak élvezni. Feltehetô, hogy a
Windows valamelyik következô változata már tartalmazni
fogja az OpenGL leírónyelvet. Ha ez bekövetkezik, úgy
hamarosan az intelligens VGA kártyák (amit ma
Windows-gyorsítónak hívunk) már támogatni fogják a
háromdimenziós grafikát. Addig is mindenki saját kedve és
pénztárcája szerint próbálgathatja a 3D megjelenítést.
@KSteiner András@N
┌──────────────────────────────────────────────────────────┐
│ A könyv, floppymellékletén a forrásprogramokkal és a │▒
│ lefordított repülésszimulátorral szerkesztôségünkben │▒
│ megtekinthetô illetve megrendelhetô, ára 2475 Ft. │▒
└──────────────────────────────────────────────────────────┘▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
@<9410\FLIGHT1.GIF>Drótvázas testforgatás demó@N
@<9410\FLIGHT2.GIF>Felszállás!@N
@<9410\FLIGHT3.GIF>Takart felület demó@N
@<9410\FLIGHT4.GIF>Egymást takaró testek mozgásban@N